<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Library</OutputType>
    <RootNamespace>Internal.TypeSystem</RootNamespace>
    <AssemblyName>ILCompiler.TypeSystem</AssemblyName>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    <TargetFramework>$(NetCoreAppToolCurrent)</TargetFramework>
    <NoWarn>$(NoWarn);CA1866</NoWarn>
    <EnableDefaultCompileItems>false</EnableDefaultCompileItems>
    <Platforms>x64;x86</Platforms>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
    <EnableDiaSymReaderUse Condition="'$(DotNetBuildSourceOnly)' != 'true'">true</EnableDiaSymReaderUse>
    <DefineConstants Condition="'$(EnableDiaSymReaderUse)' != 'true'">$(DefineConstants);DISABLE_UNMANAGED_PDB_SYMBOLS</DefineConstants>

    <!-- We're binplacing these into an existing publish layout so that F5 build in VS updates
         the same bits tests expect to see in artifacts/ilc. That way we never need to wonder which
         binaries are up to date and which are stale. -->
    <GenerateDependencyFile>false</GenerateDependencyFile>
    <Configurations>Debug;Release;Checked</Configurations>
    <IsTrimmable>true</IsTrimmable>
    <NoWarn>$(NoWarn);CA1859</NoWarn>
  </PropertyGroup>

  <ItemGroup Label="Embedded Resources">
    <EmbeddedResource Include="..\..\Common\TypeSystem\Common\Properties\Resources.resx">
      <LogicalName>Internal.TypeSystem.Strings.resources</LogicalName>
    </EmbeddedResource>
  </ItemGroup>

  <ItemGroup>
    <PackageReference Condition="'$(EnableDiaSymReaderUse)' == 'true'" Include="Microsoft.DiaSymReader" Version="$(MicrosoftDiaSymReaderVersion)" />
  </ItemGroup>

  <ItemGroup>
    <Compile Include="..\..\Common\TypeSystem\Common\ArrayMethod.Diagnostic.cs">
      <Link>TypeSystem\Common\ArrayMethod.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\ArrayType.Canon.cs">
      <Link>TypeSystem\Canon\ArrayType.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\ByRefType.Canon.cs">
      <Link>TypeSystem\Canon\ByRefType.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\CanonTypes.cs">
      <Link>TypeSystem\Canon\CanonTypes.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\CanonTypes.Metadata.cs">
      <Link>TypeSystem\Canon\CanonTypes.Metadata.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\CanonTypes.Diagnostic.cs">
      <Link>TypeSystem\Canon\CanonTypes.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\CanonTypes.Interop.cs">
      <Link>TypeSystem\Canon\CanonTypes.Interop.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\CanonTypes.Sorting.cs">
      <Link>TypeSystem\Canon\CanonTypes.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\FunctionPointerType.Canon.cs">
      <Link>TypeSystem\Canon\FunctionPointerType.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\GenericParameterDesc.Canon.cs">
      <Link>TypeSystem\Canon\GenericParameterDesc.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\StandardCanonicalizationAlgorithm.cs">
      <Link>TypeSystem\Canon\StandardCanonicalizationAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\DefType.Canon.cs">
      <Link>TypeSystem\Canon\DefType.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\InstantiatedMethod.Canon.cs">
      <Link>TypeSystem\Canon\InstantiatedMethod.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\InstantiatedType.Canon.cs">
      <Link>TypeSystem\Canon\InstantiatedType.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\MetadataType.Canon.cs">
      <Link>TypeSystem\Canon\MetadataType.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\MethodDelegator.Canon.cs">
      <Link>TypeSystem\Canon\MethodDelegator.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\MethodDesc.Canon.cs">
      <Link>TypeSystem\Canon\MethodDesc.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\MethodForInstantiatedType.Canon.cs">
      <Link>TypeSystem\Canon\MethodForInstantiatedType.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\ParameterizedType.Canon.cs">
      <Link>TypeSystem\Canon\ParameterizedType.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\PointerType.Canon.cs">
      <Link>TypeSystem\Canon\PointerType.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\SignatureVariable.Canon.cs">
      <Link>TypeSystem\Canon\SignatureVariable.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\TypeDesc.Canon.cs">
      <Link>TypeSystem\Canon\TypeDesc.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Canon\TypeSystemContext.Canon.cs">
      <Link>TypeSystem\Canon\TypeSystemContext.Canon.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\CodeGen\FieldDesc.CodeGen.cs">
      <Link>TypeSystem\CodeGen\FieldDesc.CodeGen.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\CodeGen\MethodDelegator.CodeGen.cs">
      <Link>TypeSystem\CodeGen\MethodDelegator.CodeGen.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\CodeGen\MethodDesc.CodeGen.cs">
      <Link>TypeSystem\CodeGen\MethodDesc.CodeGen.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\CodeGen\TargetDetails.CodeGen.cs">
      <Link>TypeSystem\CodeGen\TargetDetails.CodeGen.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\CodeGen\TypeDesc.CodeGen.cs">
      <Link>TypeSystem\CodeGen\TypeDesc.CodeGen.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\AlignmentHelper.cs">
      <Link>Utilities\AlignmentHelper.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ArrayOfTRuntimeInterfacesAlgorithm.cs">
      <Link>Utilities\ArrayOfTRuntimeInterfacesAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\CastingHelper.cs">
      <Link>TypeSystem\Common\CastingHelper.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\CastingHelper.TypeEquivalence.cs">
      <Link>TypeSystem\Common\CastingHelper.TypeEquivalence.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ConstructedTypeRewritingHelpers.cs">
      <Link>TypeSystem\Common\ConstructedTypeRewritingHelpers.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ExplicitLayoutValidator.cs">
      <Link>TypeSystem\Common\ExplicitLayoutValidator.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\FieldLayoutIntervalCalculator.cs">
      <Link>TypeSystem\Common\FieldLayoutIntervalCalculator.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\FunctionPointerType.cs">
      <Link>TypeSystem\Common\FunctionPointerType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\IAssemblyDesc.cs">
      <Link>TypeSystem\Common\IAssemblyDesc.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\IModuleResolver.cs">
      <Link>TypeSystem\Common\IModuleResolver.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\Instantiation.cs">
      <Link>TypeSystem\Common\Instantiation.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ModuleDesc.cs">
      <Link>TypeSystem\Common\ModuleDesc.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\NotFoundBehavior.cs">
      <Link>TypeSystem\Common\NotFoundBehavior.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ResolutionFailure.cs">
      <Link>TypeSystem\Common\ResolutionFailure.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeSystemEntity.cs">
      <Link>TypeSystem\Common\TypeSystemEntity.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeSystemException.cs">
      <Link>TypeSystem\Common\TypeSystemException.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\SimpleArrayOfTRuntimeInterfacesAlgorithm.cs">
      <Link>TypeSystem\Common\SimpleArrayOfTRuntimeInterfacesAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeSystemException.Resources.cs">
      <Link>TypeSystem\Common\TypeSystemException.Resources.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ThrowHelper.cs">
      <Link>TypeSystem\Common\ThrowHelper.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ThrowHelper.Common.cs">
      <Link>TypeSystem\Common\ThrowHelper.Common.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeWithRepeatedFields.cs">
      <Link>TypeSystem\Common\TypeWithRepeatedFields.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeWithRepeatedFields.Sorting.cs">
      <Link>TypeSystem\Common\TypeWithRepeatedFields.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeWithRepeatedFields.Diagnostic.cs">
      <Link>TypeSystem\Common\TypeWithRepeatedFields.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeWithRepeatedFieldsFieldLayoutAlgorithm.cs">
      <Link>TypeSystem\Common\TypeWithRepeatedFieldsFieldLayoutAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\UniversalCanonLayoutAlgorithm.cs">
      <Link>TypeSystem\Common\UniversalCanonLayoutAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\Utilities\CustomAttributeTypeNameFormatter.cs">
      <Link>Utilities\CustomAttributeTypeNameFormatter.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\Utilities\CustomAttributeTypeNameParser.cs">
      <Link>Utilities\CustomAttributeTypeNameParser.cs</Link>
    </Compile>
    <Compile Include="$(LibrariesProjectRoot)\Common\src\System\Reflection\TypeNameParser.cs">
      <Link>Utilities\TypeNameParser.cs</Link>
    </Compile>
    <Compile Include="$(LibrariesProjectRoot)\Common\src\System\Text\ValueStringBuilder.cs">
      <Link>Utilities\ValueStringBuilder.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\Utilities\GCPointerMap.Algorithm.cs">
      <Link>Utilities\GCPointerMap.Algorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\Utilities\GCPointerMap.cs">
      <Link>Utilities\GCPointerMap.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\Utilities\DebugNameFormatter.cs">
      <Link>Utilities\DebugNameFormatter.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\Utilities\LockFreeReaderHashtable.cs">
      <Link>Utilities\LockFreeReaderHashtable.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ArrayType.cs">
      <Link>TypeSystem\Common\ArrayType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\BaseTypeRuntimeInterfacesAlgorithm.cs">
      <Link>TypeSystem\Common\BaseTypeRuntimeInterfacesAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ByRefType.cs">
      <Link>TypeSystem\Common\ByRefType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\GenericParameterDesc.cs">
      <Link>TypeSystem\Common\GenericParameterDesc.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\GenericParameterDesc.Diagnostic.cs">
      <Link>TypeSystem\Common\GenericParameterDesc.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ExceptionStringID.cs">
      <Link>TypeSystem\Common\ExceptionStringID.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\FieldForInstantiatedType.cs">
      <Link>TypeSystem\Common\FieldForInstantiatedType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\FieldDesc.cs">
      <Link>TypeSystem\Common\FieldDesc.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\FieldDesc.ToString.cs">
      <Link>TypeSystem\Common\FieldDesc.ToString.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\FieldDesc.FieldLayout.cs">
      <Link>TypeSystem\Common\FieldDesc.FieldLayout.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\FieldLayoutAlgorithm.cs">
      <Link>TypeSystem\Common\FieldLayoutAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ImpliedRepeatedFieldDesc.cs">
      <Link>TypeSystem\Common\ImpliedRepeatedFieldDesc.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ImpliedRepeatedFieldDesc.Sorting.cs">
      <Link>TypeSystem\Common\ImpliedRepeatedFieldDesc.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\InstantiatedMethod.cs">
      <Link>TypeSystem\Common\InstantiatedMethod.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\InstantiatedMethod.Diagnostic.cs">
      <Link>TypeSystem\Common\InstantiatedMethod.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\InstantiatedType.cs">
      <Link>TypeSystem\Common\InstantiatedType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\InstantiatedType.Metadata.cs">
      <Link>TypeSystem\Common\InstantiatedType.Metadata.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\InstantiatedType.Diagnostic.cs">
      <Link>TypeSystem\Common\InstantiatedType.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\InstantiatedType.Interfaces.cs">
      <Link>TypeSystem\Common\InstantiatedType.Interfaces.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\InstantiatedType.MethodImpls.cs">
      <Link>TypeSystem\Common\InstantiatedType.MethodImpls.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\InstantiatedType.TypeEquivalence.cs">
      <Link>TypeSystem\Common\InstantiatedType.TypeEquivalence.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\LayoutInt.cs">
      <Link>TypeSystem\Common\LayoutInt.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MetadataType.cs">
      <Link>TypeSystem\Common\MetadataType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\DefType.Diagnostic.cs">
      <Link>TypeSystem\Common\DefType.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MetadataType.Interfaces.cs">
      <Link>TypeSystem\Common\MetadataType.Interfaces.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MetadataType.MethodImpls.cs">
      <Link>TypeSystem\Common\MetadataType.MethodImpls.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MetadataFieldLayoutAlgorithm.cs">
      <Link>TypeSystem\Common\MetadataFieldLayoutAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MetadataRuntimeInterfacesAlgorithm.cs">
      <Link>TypeSystem\Common\MetadataRuntimeInterfacesAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MetadataTypeSystemContext.cs">
      <Link>TypeSystem\Common\MetadataTypeSystemContext.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MethodForInstantiatedType.cs">
      <Link>TypeSystem\Common\MethodForInstantiatedType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MethodForInstantiatedType.Diagnostic.cs">
      <Link>TypeSystem\Common\MethodForInstantiatedType.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ParameterizedType.cs">
      <Link>TypeSystem\Common\ParameterizedType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\PointerType.cs">
      <Link>TypeSystem\Common\PointerType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\PropertySignature.cs">
      <Link>TypeSystem\Common\PropertySignature.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\SignatureVariable.cs">
      <Link>TypeSystem\Common\SignatureVariable.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TargetArchitecture.cs">
      <Link>TypeSystem\Common\TargetArchitecture.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TargetDetails.cs">
      <Link>TypeSystem\Common\TargetDetails.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TargetDetails.ToString.cs">
      <Link>TypeSystem\Common\TargetDetails.ToString.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\ThreadSafeFlags.cs">
      <Link>TypeSystem\Common\ThreadSafeFlags.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeFlags.cs">
      <Link>TypeSystem\Common\TypeFlags.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeHashingAlgorithms.cs">
      <Link>TypeSystem\Common\TypeHashingAlgorithms.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeSystemConstraintsHelpers.cs">
      <Link>TypeSystem\Common\TypeSystemConstraintsHelpers.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeSystemContext.cs">
      <Link>TypeSystem\Common\TypeSystemContext.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeSystemContext.Resolution.cs">
      <Link>TypeSystem\Common\TypeSystemContext.Resolution.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeSystemContext.FieldLayout.cs">
      <Link>TypeSystem\Common\TypeSystemContext.FieldLayout.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeSystemHelpers.cs">
      <Link>TypeSystem\Common\TypeSystemHelpers.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\Utilities\ExceptionTypeNameFormatter.cs">
      <Link>Utilities\ExceptionTypeNameFormatter.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\Utilities\ExceptionTypeNameFormatter.Metadata.cs">
      <Link>Utilities\ExceptionTypeNameFormatter.Metadata.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\Utilities\TypeNameFormatter.cs">
      <Link>Utilities\TypeNameFormatter.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\WellKnownType.cs">
      <Link>TypeSystem\Common\WellKnownType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\VirtualMethodAlgorithm.cs">
      <Link>TypeSystem\Common\VirtualMethodAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MethodDelegator.cs">
      <Link>TypeSystem\Common\MethodDelegator.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MethodDelegator.Diagnostic.cs">
      <Link>TypeSystem\Common\MethodDelegator.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MethodDesc.cs">
      <Link>TypeSystem\Common\MethodDesc.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MethodDesc.Diagnostic.cs">
      <Link>TypeSystem\Common\MethodDesc.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MethodDesc.ToString.cs">
      <Link>TypeSystem\Common\MethodDesc.ToString.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\MetadataVirtualMethodAlgorithm.cs">
      <Link>TypeSystem\Common\StandardVirtualMethodAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeDesc.cs">
      <Link>TypeSystem\Common\TypeDesc.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeDesc.ToString.cs">
      <Link>TypeSystem\Common\TypeDesc.ToString.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeDesc.Interfaces.cs">
      <Link>TypeSystem\Common\TypeDesc.Interfaces.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\TypeDesc.TypeEquivalence.cs">
      <Link>TypeSystem\Common\TypeDesc.TypeEquivalence.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\DefType.cs">
      <Link>TypeSystem\Common\DefType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\DefType.FieldLayout.cs">
      <Link>TypeSystem\Common\DefType.FieldLayout.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\RuntimeInterfacesAlgorithm.cs">
      <Link>TypeSystem\Common\RuntimeInterfacesAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\PortableExecutableMethodExtensions.cs">
      <Link>Compiler\PortableExecutableMethodExtensions.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\CustomAttributeTypeProvider.cs">
      <Link>Ecma\CustomAttributeTypeProvider.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaAssembly.cs">
      <Link>Ecma\EcmaAssembly.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaAssembly.Symbols.cs">
      <Link>Ecma\EcmaAssembly.Symbols.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaField.Sorting.cs">
      <Link>Ecma\EcmaField.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaField.CodeGen.cs">
      <Link>Ecma\EcmaField.CodeGen.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaGenericParameter.Sorting.cs">
      <Link>Ecma\EcmaGenericParameter.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaMethod.Sorting.cs">
      <Link>Ecma\EcmaMethod.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaModule.Sorting.cs">
      <Link>Ecma\EcmaModule.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaType.Sorting.cs">
      <Link>Ecma\EcmaType.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaType.TypeEquivalence.cs">
      <Link>Ecma\EcmaType.TypeEquivalence.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EffectiveVisibility.cs">
      <Link>Ecma\EffectiveVisibility.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\PrimitiveTypeProvider.cs">
      <Link>Ecma\PrimitiveTypeProvider.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaModule.Symbols.cs">
      <Link>Ecma\EcmaModule.Symbols.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaSignatureTranslator.cs">
      <Link>Ecma\EcmaSignatureTranslator.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\SymbolReader\PdbSymbolReader.cs">
      <Link>Ecma\SymbolReader\PdbSymbolReader.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\SymbolReader\PortablePdbSymbolReader.cs">
      <Link>Ecma\SymbolReader\PortablePdbSymbolReader.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\SymbolReader\UnmanagedPdbSymbolReader.cs">
      <Link>Ecma\SymbolReader\UnmanagedPdbSymbolReader.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaField.cs">
      <Link>Ecma\EcmaField.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaGenericParameter.cs">
      <Link>Ecma\EcmaGenericParameter.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaGenericParameter.Diagnostic.cs">
      <Link>Ecma\EcmaGenericParameter.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaMethod.cs">
      <Link>Ecma\EcmaMethod.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaMethod.Diagnostic.cs">
      <Link>Ecma\EcmaMethod.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaModule.cs">
      <Link>Ecma\EcmaModule.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaSignatureParser.cs">
      <Link>Ecma\EcmaSignatureParser.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaSignatureEncoder.cs">
      <Link>Ecma\EcmaSignatureEncoder.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaType.cs">
      <Link>Ecma\EcmaType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaType.Diagnostic.cs">
      <Link>Ecma\EcmaType.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaType.MethodImpls.cs">
      <Link>Ecma\EcmaType.MethodImpls.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\EcmaType.Interfaces.cs">
      <Link>Ecma\EcmaType.Interfaces.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\MetadataExtensions.cs">
      <Link>Ecma\MetadataExtensions.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\IMetadataStringDecoderProvider.cs">
      <Link>Ecma\IMetadataStringDecoderProvider.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\IEcmaModule.cs">
      <Link>Ecma\IEcmaModule.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Ecma\CachingMetadataStringDecoder.cs">
      <Link>Ecma\CachingMetadataStringDecoder.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\EcmaMethodIL.cs">
      <Link>IL\EcmaMethodIL.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\EcmaMethodIL.Symbols.cs">
      <Link>IL\EcmaMethodIL.Symbols.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\HelperExtensions.cs">
      <Link>IL\HelperExtensions.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\MethodIL.cs">
      <Link>IL\MethodIL.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\MethodIL.Symbols.cs">
      <Link>IL\MethodIL.Symbols.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\MethodILDebugView.cs">
      <Link>IL\MethodILDebugView.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\ILDisassembler.cs">
      <Link>IL\ILDisassembler.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\InstantiatedMethodIL.cs">
      <Link>IL\InstantiatedMethodIL.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\ILStackHelper.cs">
      <Link>IL\ILStackHelper.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\ILOpcode.cs">
      <Link>IL\ILOpcode.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\ILOpcodeHelper.cs">
      <Link>IL\ILOpcodeHelper.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\ILTokenReplacer.cs">
      <Link>IL\ILTokenReplacer.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\ILReader.cs">
      <Link>IL\ILReader.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\UnsafeAccessors.cs">
      <Link>IL\UnsafeAccessors.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\Stubs\ILEmitter.cs">
      <Link>IL\Stubs\ILEmitter.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\Stubs\PInvokeTargetNativeMethod.cs">
      <Link>IL\Stubs\PInvokeTargetNativeMethod.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\Stubs\PInvokeTargetNativeMethod.Diagnostic.cs">
      <Link>IL\Stubs\PInvokeTargetNativeMethod.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\Stubs\PInvokeTargetNativeMethod.Mangling.cs">
      <Link>IL\Stubs\PInvokeTargetNativeMethod.Mangling.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\IL\Stubs\PInvokeTargetNativeMethod.Sorting.cs">
      <Link>IL\Stubs\PInvokeTargetNativeMethod.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\FieldDesc.Sorting.cs">
      <Link>TypeSystem\Sorting\FieldDesc.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\FieldForInstantiatedType.Sorting.cs">
      <Link>TypeSystem\Sorting\FieldForInstantiatedType.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\InstantiatedMethod.Sorting.cs">
      <Link>TypeSystem\Sorting\InstantiatedMethod.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\MethodDesc.Sorting.cs">
      <Link>TypeSystem\Sorting\MethodDesc.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\MethodForInstantiatedType.Sorting.cs">
      <Link>TypeSystem\Sorting\MethodForInstantiatedType.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Interop\FieldDesc.Interop.cs">
      <Link>TypeSystem\Interop\FieldDesc.Interop.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Interop\InstantiatedType.Interop.cs">
      <Link>TypeSystem\Interop\InstantiatedType.Interop.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Interop\MetadataType.Interop.cs">
      <Link>TypeSystem\Interop\MetadataType.Interop.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Interop\MethodDelegator.Interop.cs">
      <Link>TypeSystem\Interop\MethodDelegator.Interop.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Interop\MethodDesc.Interop.cs">
      <Link>TypeSystem\Interop\MethodDesc.Interop.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Interop\MarshalAsDescriptor.cs">
      <Link>TypeSystem\Interop\MarshalAsDescriptor.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Mangling\IPrefixMangledMethod.cs">
      <Link>TypeSystem\Mangling\IPrefixMangledMethod.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Mangling\IPrefixMangledType.cs">
      <Link>TypeSystem\Mangling\IPrefixMangledType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Mangling\IPrefixMangledSignature.cs">
      <Link>TypeSystem\Mangling\IPrefixMangledSignature.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\System\Collections\Generic\ArrayBuilder.cs">
      <Link>Utilities\ArrayBuilder.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Common\LocalVariableDefinition.cs">
      <Link>TypeSystem\Common\LocalVariableDefinition.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\ArrayType.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\ArrayType.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\ByRefType.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\ByRefType.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\FieldDesc.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\FieldDesc.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\FunctionPointerType.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\FunctionPointerType.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\MethodDesc.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\MethodDesc.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\PointerType.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\PointerType.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\MethodForRuntimeDeterminedType.cs">
      <Link>TypeSystem\RuntimeDetermined\MethodForRuntimeDeterminedType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\MethodForRuntimeDeterminedType.Diagnostic.cs">
      <Link>TypeSystem\RuntimeDetermined\MethodForRuntimeDeterminedType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\MethodForRuntimeDeterminedType.Sorting.cs">
      <Link>TypeSystem\RuntimeDetermined\MethodForRuntimeDeterminedType.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\RuntimeDeterminedCanonicalizationAlgorithm.cs">
      <Link>TypeSystem\RuntimeDetermined\RuntimeDeterminedCanonicalizationAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\RuntimeDeterminedFieldLayoutAlgorithm.cs">
      <Link>TypeSystem\RuntimeDetermined\RuntimeDeterminedFieldLayoutAlgorithm.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\DefType.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\DefType.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\GenericParameterDesc.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\GenericParameterDesc.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\ParameterizedType.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\ParameterizedType.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\RuntimeDeterminedType.cs">
      <Link>TypeSystem\RuntimeDetermined\RuntimeDeterminedType.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\RuntimeDeterminedType.Diagnostic.cs">
      <Link>TypeSystem\RuntimeDetermined\RuntimeDeterminedType.Diagnostic.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\RuntimeDeterminedType.Sorting.cs">
      <Link>TypeSystem\RuntimeDetermined\RuntimeDeterminedType.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\RuntimeDeterminedTypeUtilities.cs">
      <Link>TypeSystem\RuntimeDetermined\RuntimeDeterminedTypeUtilities.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\SignatureVariable.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\SignatureVariable.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\TypeDesc.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\TypeDesc.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\RuntimeDetermined\TypeSystemContext.RuntimeDetermined.cs">
      <Link>TypeSystem\RuntimeDetermined\TypeSystemContext.RuntimeDetermined.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\System\FormattingHelpers.cs">
      <Link>Common\System\FormattingHelpers.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\ArrayType.Sorting.cs">
      <Link>TypeSystem\Sorting\ArrayType.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\ByRefType.Sorting.cs">
      <Link>TypeSystem\Sorting\ByRefType.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\FunctionPointerType.Sorting.cs">
      <Link>TypeSystem\Sorting\FunctionPointerType.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\InstantiatedType.Sorting.cs">
      <Link>TypeSystem\Sorting\InstantiatedType.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\MethodSignature.Sorting.cs">
      <Link>TypeSystem\Sorting\MethodSignature.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\PointerType.Sorting.cs">
      <Link>TypeSystem\Sorting\PointerType.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\SignatureVariable.Sorting.cs">
      <Link>TypeSystem\Sorting\SignatureVariable.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\TypeDesc.Sorting.cs">
      <Link>TypeSystem\Sorting\TypeDesc.Sorting.cs</Link>
    </Compile>
    <Compile Include="..\..\Common\TypeSystem\Sorting\TypeSystemComparer.cs">
      <Link>TypeSystem\Sorting\TypeSystemComparer.cs</Link>
    </Compile>
  </ItemGroup>

  <ItemGroup>
    <AdditionalFiles Include="BannedSymbols.txt" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.CodeAnalysis.BannedApiAnalyzers" Version="$(MicrosoftCodeAnalysisBannedApiAnalyzersVersion)" Condition="'$(DotNetBuildSourceOnly)' != 'true'">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
  </ItemGroup>
</Project>
